/*
 * @Description: In User Settings Edit
 * @Author: xiaoying
 * @Date: 2019-09-10 09:21:36
 * @LastEditTime: 2019-09-16 19:07:01
 * @LastEditors: mayuanye
 */
import { NativeModules } from 'react-native';
let SmlUtils = NativeModules.JSSimpleModelLayerUtil;

/**
 * @class SimpleModelLayerUtil
 * @description 简单模型图层工具类
 */
export default class SimpleModelLayerUtil {
  /**
   * 创建模型存储文件，然后通过该存储文件构建SimpleModelLayer，可往其中添加模型
   *
   * @memberof SimpleModelLayerUtil
   * @param {String} strURL 型存储文件
   * @returns {boolean} true-成功 ；false-失败
   */
  static async createModelStorageFileIfNotExists(strURL) {
    try {
      let result = await SmlUtils.createModelStorageFileIfNotExists(strURL);
      return result;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   *  添加模型，返回Id
   *
   * @memberof SimpleModelLayerUtil
   * @param {Object} simpleModelLayer  模型层 （SimpleModelLayer类型的Object）
   * @param {Object} model 要添加的模型  （Model类型的Object）
   * @returns {Number} 返回Id （int类型的Number）
   */
  static async addModel(simpleModelLayer, model) {
    try {
      let id = await SmlUtils.addModel(
        simpleModelLayer._MGSimpleModelLayerId,
        model._MGModelId
      );
      return id;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   *  更新模型
   *
   * @memberof SimpleModelLayerUtil
   * @param {Object} simpleModelLayer  模型层 （SimpleModelLayer类型的Object）
   * @param {Number} id 模型ID （int类型的Number）
   * @param {Object} model 要更新的模型  （Model类型的Object）
   * @returns {Number} 成功标志 （int类型的Number）
   */
  static async updateModel(simpleModelLayer, id, model) {
    try {
      let result = await SmlUtils.updateModel(
        simpleModelLayer._MGSimpleModelLayerId,
        id,
        model._MGModelId
      );
      return result;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   *  删除模型
   *
   * @memberof SimpleModelLayerUtil
   * @param {Object} simpleModelLayer  模型层 （SimpleModelLayer类型的Object）
   * @param {Number} id 模型ID （int类型的Number）
   * @returns {Number} 成功标志（int类型的Number）
   */
  static async removeModel(simpleModelLayer, id) {
    try {
      let result = await SmlUtils.removeModel(
        simpleModelLayer._MGSimpleModelLayerId,
        id
      );
      return result;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   *  清空数据
   *
   * @memberof SimpleModelLayerUtil
   * @param {Object} simpleModelLayer  模型层 （SimpleModelLayer类型的Object）
   * @returns {Number} 成功标志 （int类型的Number）
   */
  static async clearModels(simpleModelLayer) {
    try {
      let result = await SmlUtils.clearModels(
        simpleModelLayer._MGSimpleModelLayerId
      );
      return result;
    } catch (e) {
      console.error(e);
    }
  }
}
